﻿<?php
/**
 * Classe MAPPER da tabela TB_PESSOA
 * 
 * @author			Mário R. Castro
 * @copyright		Voitech Sistema
 * @package			SEMAS
 * @subpackage		semas.application.models
 * @version			1.0
*/
class App_Model_PessoaMapper extends Voitech_Mapper{

    public function __construct(App_Model_Pessoa $obPessoa){
        $this->obModel = $obPessoa;
    }    
    
    public function buscarPorId() {}
    
    public function carregar(stdClass $obRow) {
        $this->obModel->setCoPessoa($obRow->co_pessoa);
        $this->obModel->setNuCpf($obRow->nu_cpf);
        $this->obModel->setNuRg($obRow->nu_rg);
        $this->obModel->setNoPessoa($obRow->no_pessoa);
        $this->obModel->setNoRgEmissor($obRow->no_rg_emissor);
        $this->obModel->setSgUfRgEmissor($obRow->sg_uf_rg_emissor);
        $this->obModel->setDtNascimento($obRow->dt_nascimento);
        $this->obModel->setNoEndereco($obRow->no_endereco);
        $this->obModel->setNoComplemento($obRow->no_complemento);
        $this->obModel->setNoBairro($obRow->no_bairro);
        
        $obParamCidade = new App_Model_ParamCidade();
        $obParamCidade->setCoCidade($obRow->co_cidade);
        $obParamCidade->setNoCidade($obRow->no_cidade);
        $obParamCidade->setObParamUf(new App_Model_ParamUf($obRow->sg_uf));
        $this->obModel->setObParamCidade($obParamCidade);    
        
        $obParamSexo = new App_Model_ParamSexo();
        $obParamSexo->setCoSexo($obRow->co_sexo);
        $obParamSexo->setNoSexo($obRow->no_sexo);
        $this->obModel->setObSexo($obParamSexo);  

        $obParamCivil = new App_Model_ParamEstadoCivil();
        $obParamCivil->setCoEstadoCivil($obRow->co_sexo);
        $obParamCivil->setNoEstadoCivil($obRow->no_sexo);
        $this->obModel->setObEstadoCivil($obParamCivil);         
        
        $this->obModel->setStStatus($obRow->st_status);
        $this->obModel->setFlagExcluir($obRow->fl_excluir);
        $this->obModel->setDtCadastro($obRow->dt_cadastro_pessoa);
        return $this;
    }
    
    public function cadastrar() {
        $arPessoa = $this->retornarArrayPopulado();   
        return App_Model_Db_Pessoa::build()->insert($arPessoa);    
    }
	
    public function alterar() {
        $arPessoa = $this->retornarArrayPopulado();       
        return App_Model_Db_Pessoa::build()->update($arPessoa,App_Model_Db_Pessoa::build()->getAdapter()->quoteInto('co_pessoa = ?',$this->obModel->getCoPessoa()));     
    }

    public function retornarArrayPopulado() {
    	
        $arrPessoa = array(	'no_pessoa'=>$this->obModel->getNoPessoa());

        if($this->obModel->getNuCpf() != ''){
            $arrPessoa['nu_cpf'] = $this->obModel->getNuCpf();
        }

        if($this->obModel->getNuRg() != ''){
            $arrPessoa['nu_rg'] = $this->obModel->getNuRg();
        }

        if($this->obModel->getNoRgEmissor() != ''){
            $arrPessoa['no_rg_emissor'] = $this->obModel->getNoRgEmissor();
        }

        if($this->obModel->getSgUfRgEmissor() != ''){
            $arrPessoa['sg_uf_rg_emissor'] = $this->obModel->getSgUfRgEmissor();
        }

        if($this->obModel->getDtNascimento() != ''){
            $arrPessoa['dt_nascimento'] = Voitech_Util::converteDataBanco($this->obModel->getDtNascimento());
        }

        if($this->obModel->getNoEndereco() != ''){
            $arrPessoa['no_endereco'] = $this->obModel->getNoEndereco();
        }

        if($this->obModel->getNoComplemento() != ''){
            $arrPessoa['no_complemento'] = $this->obModel->getNoComplemento();
        }
        
        if($this->obModel->getNoBairro() != ''){
            $arrPessoa['no_bairro'] = $this->obModel->getNoBairro();
        }
        
        if($this->obModel->getObParamCidade() != ''){
            $arrPessoa['co_cidade'] = $this->obModel->getObParamCidade()->getCoCidade();            
            if($this->obModel->getObParamCidade()->getObParamUf() != ''){
                $arrPessoa['sg_uf'] = $this->obModel->getObParamCidade()->getObParamUf()->getSgUf();            
            }
        }
        
        if($this->obModel->getObSexo() != ''){
            $arrPessoa['co_sexo'] = $this->obModel->getObSexo()->CoSexo();
        }
        
        if($this->obModel->getObEstadoCivil() != ''){
            $arrPessoa['co_estado_civil'] = $this->obModel->getObEstadoCivil()->CoEstadoCivil();
        }
        
        if( $this->obModel->getCoPessoa() != '' ) {
            $arrPessoa['co_pessoa'] = $this->obModel->getCoPessoa();
        }
        return $arrPessoa;
    }

    public function ativar() {
        if($this->obModel->getCoPessoa() == ''){
            throw new Voitech_Exception('Falta cod. Pessoa');
        }
        $arrUpdate = array('st_ativo'=>'S');       
        return App_Model_Db_Pessoa::build()->update($arrUpdate,App_Model_Db_Pessoa::build()->getAdapter()
                                                                                            ->quoteInto('co_pessoa = ?',$this->obModel->getCoPessoa()));                
    }
    
    public function desativar() {
        if($this->obModel->getCoPessoa() == ''){
            throw new Voitech_Exception('Falta cod. Pessoa');
        }
        $arrUpdate = array('st_ativo'=>'N');
        return App_Model_Db_Pessoa::build()->update($arrUpdate
                                                   ,App_Model_Db_Pessoa::build()->getAdapter()
                                                                                ->quoteInto('co_pessoa = ?',$this->obModel->getCoPessoa()));                
    }
      
    public function excluir() {
        if($this->obModel->getCoPessoa() == ''){
            throw new Voitech_Exception('Falta cod. Pessoa');
        }
        return App_Model_Db_Pessoa::build()->delete(App_Model_Db_Pessoa::build()->getAdapter()->quoteInto('co_pessoa = ?',$this->obModel->getCoPessoa()));                
    }
	
}